This is a very powerful way to define at once both the timesheet and the instrument rhythms, symbols and velocities. Both timesheets and rhythms can have multiple resolutions. with sets the timesheet resolution so that each column will represent the length symbol the with defines. A new with definition in between the timesheets will set up a new resolution value. Also multiple tonalities can be given, and the tonality- change string is valid for all the subsequent instruments til the next tonality-change definition. If the tonality string is missing then the atom, or a list of tonality names will be accepted.
The instrument can be a single instrument, or instrument group defined with def-orchestra. The properties are inherited to all sub-groups and instruments of the group.
(def-section-timesheet intro
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . . ... " '((blues1 e 4) (blues2 f 4))
riff1 "-- --- -- - - --" '(a b -b c -c) with '(40 90 80 70)
bass "- - - - -- " '((a b -b c)) with '(65 55 45 75)
beat 1/8t
riffsup "------ " '(a) with '(30 40 50 60 70 80)
)
Rhythm beat/space matrix resolution is set with beat. The value will represent each column. The beats are filled with symbols and velocities. They can be a list of values or a normal function call. Multiple beat/space resolutions can be used changing the beat value.
Test these:
(same-as zone of riff1 in intro)
(same-as tonality of riff1 in intro)
If you'd like to use it just for defining rhythms, make it so:
(def-section-timesheet intro
;
; beats
;
beat 1/16 ; !---!---!---!---!
hihat1 "----------------" '(f) with '(65 55 45 75)
riff1 "-- --- -- - - --" '(a b -b c -c) with '(40 90 80 70)
bass "- - - - -- " '((a b -b c)) with '(65 55 45 75)
beat 1/8t
riffsup "------ " '(a) with '(30 40 50 60 70 80)
)
(same-as length of hihat1 in intro)
(same-as velocity of hihat1 in intro)
(same-as symbol of hihat1 in intro)
(same-as length of hihat2 in intro)
(same-as velocity of hihat2 in intro)
(same-as symbol of hihat2 in intro)
(same-as length of riffsup in intro)
(same-as velocity of riffsup in intro)
(same-as symbol of riffsup in intro)
Using legato and staccato
Optional legato and staccato commands enable to adjust the durations. The options are listed below. If no legato or staccato is defined, then default duration is 100% staccato, which maintains compatibility with your old scores.
staccato 100 --> duration is beat length
staccato 200 --> duration is double the (200%) beat length
only 1/16 notes overlap
staccato 50 --> duration is 50 percent of beat length
legato 50 --> duration is 50 percent of the space to next note
legato 110 --> duration is 110 percent of the space to next note
each note overlaps slightly
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . . ... " '((blues1 e 4) (blues2 f 4))
bass "--------------------------------"
;
; beats
;
beat 1/16 ; !---!---!---!---!
legato 50
bass "- - - - -- " '(a b -b c) with '(65 55 45 75)
)
(def-section sect-a
bass
channel 7
)
(play-file-p "my song"
bass '(sect-a)
)
You can have as many legato/staccato definitions as needed.
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . . ... " '((blues1 e 4) (blues2 f 4))
bass "--------------------------------"
;
; beats
;
beat 1/16 ; !---!---!---!---!
legato 50
bass1 "- - - - -- " '(a b -b c) with '(65 55 45 75)
bass2 " - - - - - " '(a b -b c) with '(65 55 45 75)
staccato 100
synth "- - - - -- " '(a b -b c) with '(65 55 45 75)
)
Other legato options:
; no legato, note duration is the same as beat
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . " '((dorian e 4) (mixolydian b 4))
strings "----------------"
beat 1/16 ; !---!---!---!---!
strings "- - " '(ace acf bcf -bdf) with '(65)
)
(play-file-p "Legatos"
strings sect-a
)
; legato n, percentual legato, 100=play full length
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . " '((dorian e 4) (mixolydian b 4))
strings "----------------"
beat 1/16 ; !---!---!---!---!
legato 100
strings "- - " '(ace acf bcf -bdf) with '(65)
)
(play-file-p "Legatos"
strings sect-a
)
; legato (fix 1/8), note duration is fixed 1/8
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . " '((dorian e 4) (mixolydian b 4))
strings "----------------"
beat 1/16 ; !---!---!---!---!
legato (fix 1/8)
strings "- - " '(ace acf bcf -bdf) with '(65)
)
(play-file-p "Legatos"
strings sect-a
)
; legato (add 1/16), note duration is max legato plus 1/16
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . " '((dorian e 4) (mixolydian b 4))
strings "----------------"
beat 1/16 ; !---!---!---!---!
legato (add 1/16)
strings "- - " '(ace acf bcf -bdf) with '(65)
)
(play-file-p "Legatos"
strings sect-a
)
; legato (sub 1/8), note duration is max legato minus 1/8
; (same is achieved by (add -1/8)
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . " '((dorian e 4) (mixolydian b 4))
strings "----------------"
beat 1/16 ; !---!---!---!---!
legato (sub 1/8)
strings "- - " '(ace acf bcf -bdf) with '(65)
)
(play-file-p "Legatos"
strings sect-a
)
; legato (times 1.1), note duration is max legato * 1.1
; (same is achieved by legato 110)
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . " '((dorian e 4) (mixolydian b 4))
strings "----------------"
beat 1/16 ; !---!---!---!---!
legato (times 1.1)
strings "- - " '(ace acf bcf -bdf) with '(65)
)
(play-file-p "Legatos"
strings sect-a
)
; legato (divide 2), note duration is max legato divided by 2
; (same is achieved by legato 50)
(def-section-timesheet sect-a
;
; timesheet
;
with 1/1
; !---!---!---!---!---!---!---!---!
tonality ". . . . . . " '((dorian e 4) (mixolydian b 4))
strings "----------------"
beat 1/16 ; !---!---!---!---!
legato (divide 2)
strings "- - " '(ace acf bcf -bdf) with '(65)
)
(play-file-p "Legatos"
strings sect-a
)
; To have more specific control on lengths and durations define first
; def-section-timesheet sect-a, and then redefine length and duration